<?php namespace Common\Model;
use Hdphp\Model\Model;
//分类操作模型
class Cate extends Model{
	//指定模型操作的表(固定的写法)
	protected $table = "category";
	//自动验证(固定写法)
	protected $validate = array(
		//array(字段名，验证方法，错误信息，验证条件，验证时间)
		array('cname','required','分类名称不能为空',3,3),
		array('ctitle','required','分类标题不能为空',3,3),
		array('csort','num:0,65535','分类排序必须是为数字且在0-65535之间',3,3),
	);
	
	//此方法是自定义来的，未来想添加的时候直接调用这个方法就可以添加了
	public function addData(){
		//调用add方法之前，必须经过create，否则无法添加
		//create 才会触发自动验证
		if($this->create()){
			//调用框架里面的添加方法
			$this->add();
			return true;
		}
		return false;
	}
	
	//修改
	public function editData(){
		if(!$this->create()) return false;
		//如果想不加where就能修改，那么必须在页面放主键的隐藏域
		//这是框架写法
		$this->save();
		return true;
	}
	
	//获得除了自己和自己的所有子集的分类
	public function getNoMy($cid){
		//获得所有子集分类的cid
		$cids = $this->getSon($this->get(),$cid);
		//把自己压进去
		$cids[] = $cid;
		//变成字符串形式
		$strCids = implode(',',$cids);
		//返回结果
		return $this->where("cid NOT IN({$strCids})")->get();
	}
	
	//递归获得所有子集的cid
	// $data 全部分类数据
	// $cid  当前分类的cid
	public function getSon($data,$cid){
		//预先定义一个空数组，用于存放当前分类的cid
		$temp = array();
		foreach ($data as $v) {
			//找到子集
			if($v['pid'] == $cid){
				//将当前分类的cid存到空数组里
				$temp[] = $v['cid'];
				//每递归一次就合并一次，保证本次的数据不会丢失
				$temp = array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
		return $temp;
	}
}














 ?>